/**
 * Project: Dragonfly Secure Payment Logger
 * Feature: Stripe Webhook Integration with Duplicate Protection
 */

function doPost(e) {
  var lock = LockService.getScriptLock();
  try {
    // الانتظار لمدة 10 ثوانٍ لضمان عدم حدوث تصادم في الكتابة
    lock.waitLock(10000); 
    
    // 1. استقبال البيانات
    var data = JSON.parse(e.postData.contents);
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    
    // 2. منع التكرار باستخدام المعرف الفريد (Transaction ID)
    var transactionId = data.transactionId;
    var lastRow = sheet.getLastRow();
    
    if (lastRow > 1) {
      // نفحص العمود رقم 7 (حيث نخزن رقم المعاملة)
      var existingIds = sheet.getRange(2, 7, lastRow - 1, 1).getValues().flat();
      if (existingIds.includes(transactionId)) {
        return ContentService.createTextOutput("Duplicate Entry Ignored").setMimeType(ContentService.MimeType.TEXT);
      }
    }

    // 3. ترتيب البيانات في السطر الجديد
    // الترتيب: التاريخ | الاسم | الإيميل | الباقة | المبلغ | الإحالة | رقم المعاملة | الحالة
    var newRow = [
      new Date(),               // التاريخ والوقت
      data.name,                // اسم العميل
      data.email,               // إيميل العميل
      data.service,             // اسم الخدمة (Dragonfly Room)
      data.amount + " $",       // المبلغ
      data.referral,            // كود الإحالة (Ref)
      transactionId,            // رقم المعاملة من سترايب
      "Verified Payment"        // الحالة
    ];

    // 4. إضافة السطر للجدول
    sheet.appendRow(newRow);

    return ContentService.createTextOutput("Success: Data Logged").setMimeType(ContentService.MimeType.TEXT);

  } catch (error) {
    return ContentService.createTextOutput("Error: " + error.toString()).setMimeType(ContentService.MimeType.TEXT);
  } finally {
    lock.releaseLock();
  }
}

















// ==========================================================
// الجزء الخاص بلوحة التحكم (Dashboard) - يوضع أسفل الكود القديم
// ==========================================================

function doGet(e) {
  try {
    // جلب الشيت النشط
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    
    // جلب كل البيانات من الشيت
    var data = sheet.getDataRange().getValues();
    
    // إذا كان الشيت لا يحتوي إلا على العناوين فقط أو فارغ تماماً
    if (data.length < 2) {
      return ContentService.createTextOutput(JSON.stringify([]))
        .setMimeType(ContentService.MimeType.JSON);
    }
    
    // الصف الأول هو عناوين الأعمدة
    var headers = data[0];
    var jsonArray = [];

    // تحويل كل صف في الشيت إلى كائن (Object) بأسماء الأعمدة تلقائياً
    for (var i = 1; i < data.length; i++) {
      var obj = {};
      for (var j = 0; j < headers.length; j++) {
        // تحويل القيم إلى نصوص لضمان عدم حدوث خطأ في الـ JSON
        obj[headers[j]] = data[i][j]; 
      }
      jsonArray.push(obj);
    }

    // إرسال البيانات بصيغة JSON مع السماح بمرورها للداشبورد (حل مشكلة CORS)
    return ContentService.createTextOutput(JSON.stringify(jsonArray))
      .setMimeType(ContentService.MimeType.JSON);
      
  } catch (err) {
    // في حال حدوث خطأ، يتم إرسال رسالة توضح السبب
    return ContentService.createTextOutput(JSON.stringify({"error": err.message}))
      .setMimeType(ContentService.MimeType.JSON);
  }
}




